package com.unitd.modules.sys.service;

import com.unitd.frame.mybatis.core.service.IBaseService;
import com.unitd.modules.sys.entity.SysRole;

import java.util.List;
import java.util.Map;

/**
 * @desc 角色表业务逻辑控制接口类
 * @filename SysRoleService.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0
 * @date 2017-04-08
 */
public interface ISysRoleService extends IBaseService<SysRole, String> {

	/**
	 * @desc 根据主键ID获取对应的详情信息
	 * @param id 主键ID
	 * @return 机构详情
	 */
	SysRole findBy(String id);

	/**
	 * @desc 根据条件查询获取系统角色信息
	 * @return
	 */
	List<SysRole> findAllData();

	/**
	 * @desc 根据条件查询获取系统角色信息
	 * @param sysRole  查询条件
	 * @return
	 */
	List<SysRole> findListBy(SysRole sysRole);

	/**
	 * @desc 根据父角色，查询子角色
	 * @param parentId 父角色ID
	 */
	List<SysRole> findListByParentId(String parentId);

	/**
	 * @desc 根据用户ID获取该用户对应的角色列表
	 * @param userId 用户ID
	 * @return
	 */
	List<SysRole> findRoleListByUserId(String userId);

	/**
	 * @desc 根据用户ID获取该用户对应的角色角色名称,多个角色用,分割
	 * @param userId 用户ID
	 * @return
	 */
	String findRoleNameByUserId(String userId);

	/**
	 * @desc 根据角色ID获取该角色对应的所有权限菜单信息
	 * @param roleId 角色主键
	 * @return
	 */
	List<Map<String, Object>> getRoleRightTreeByRoleId (String roleId);

	/**
	 * @desc 处理数据保存/更新
	 * @param param 前端传送的需要处理的数据
	 * @return 数据保存/更新结果
	 */
	Integer doEdit(Map<String, Object> param);

	/**
	 * @desc 根据ID串删除机构(同时还需要删除对应的角色-机构关联信息)
	 * @param ids 需要删除的详情信息ID串,多个ID之间用,分割
	 * @return 删除记录条数
	 */
	Integer doDelete(String ids);
}